package com.ticket.sass.common.file.service;


import com.ticket.sass.common.file.enums.FileType;
import com.ticket.sass.common.file.model.FileMode;

import java.io.File;
import java.io.InputStream;

public interface FileService {

     /**
      * 根据配置参数获取token
      * @return
      */
     String uptoken();

     /**
      * 根据传入参数获取token
      * @param bucketName
      * @return
      */
     String uptoken(String bucketName,String accessKey,String secretKey);



     /**
      * 根据传入参数上传流类型文件
      * @param bucketName
      * @param fileInputStream
      * @param fileName
      * @return String 类型{"fileId":"", "fileName"：""}
      */
     FileMode uploadFile(String bucketName, String accessKey, String secretKey, InputStream fileInputStream, String fileName, FileType fileType);

     /**
      * 根据配置参数上传流类型文件
      * @param fileInputStream
      * @param fileName
      * @return String 类型{"fileId":"", "fileName"：""}
      */
     FileMode uploadFile(InputStream fileInputStream, String fileName, FileType fileType);
     
     
     /**
      * 根据配置参数上传外链文件
      * @param
      * @param fileName
      * @return String 类型{"fileId":"", "fileName"：""}
      */
     FileMode uploadFile(String fileUrl, String fileName);

     /**
      * 传入参数上传文件类型文件
      * @param file
      * @param fileName
      * @return String 类型{"fileId":"", "fileName"：""}
      */
     FileMode uploadFile(String bucketName, String accessKey, String secretKey, File file, String fileName, FileType fileType);

     /**
      * 根据配置参数上传文件类型文件
      * @param file
      * @param fileName
      * @return String 类型{"fileId":"", "fileName"：""}
      */
     FileMode uploadFile( File file, String fileName,FileType fileType);

     /**
      * 根据配置文件移动参数
      * @param fromKey
      * @param toKey
      * @return
      */
     boolean moveFile(String  fromKey,String toKey);

     /**
      * 根据闯入参数文件移动参数
      * @param fromKey
      * @param toKey
      * @return
      */
     boolean moveFile( String bucketName, String accessKey, String secretKey,String  fromKey,String toKey);

     /**
      * 根据传入参数删除文件
      * @param bucketName
      * @param accessKey
      * @param secretKey
      * @param key
      * @return
      */
     boolean deleteFile(String bucketName, String accessKey, String secretKey, String key);

     /**
      * 根据配置参数删除文件
      * @param key
      * @return
      */
     boolean deleteFile(String key);

}
